package ar.com.larreta.entidades;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;


@Entity
@Table(name = "direccion")
// Borrado logico
@SQLDelete (sql="UPDATE Direccion SET fechaEliminacion=CURRENT_TIMESTAMP WHERE ID=?")
// Solamente trae los que no fueron borrados logicamente
@Where(clause="fechaEliminacion IS NULL")
public class Direccion extends Entidad {
	
	private Long id;
	private TipoDireccion tipoDireccion;
	private Region region;
	private String calle;
	private Integer altura;
	private String adicional;
	private PersonaLocalizable persona;
	
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn (name="idTipoDireccion")
	public TipoDireccion getTipoDireccion() {
		return tipoDireccion;
	}
	
	public void setTipoDireccion(TipoDireccion tipoDireccion) {
		this.tipoDireccion = tipoDireccion;
	}
	
	@Basic @Column(name = "calle")
	public String getCalle() {
		return calle;
	}
	
	public void setCalle(String calle) {
		this.calle = calle;
	}
	
	@Basic @Column(name = "altura")
	public Integer getAltura() {
		return altura;
	}
	
	public void setAltura(Integer altura) {
		this.altura = altura;
	}
	
	@Basic @Column(name = "adicional")
	public String getAdicional() {
		return adicional;
	}
	
	public void setAdicional(String adicional) {
		this.adicional = adicional;
	}

	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn (name="idPersona")
	public PersonaLocalizable getPersona() {
		return persona;
	}

	public void setPersona(PersonaLocalizable persona) {
		this.persona = persona;
	}

	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn (name="idRegion")
	public Region getRegion() {
		return region;
	}

	public void setRegion(Region region) {
		this.region = region;
	}
	
}
